﻿using System;
using System.Data;
using System.Windows.Forms;

namespace Gestión_UTN.View.general
{
    public partial class Carreras : Form
    {
        private static Gestión_UTN.bl.carrerabl createCarrera = Gestión_UTN.factories.blfactory.createCarrera();
        private string nombre_anterior = "";

        public Carreras()
        {
            InitializeComponent();
        }

        private void Carreras_Load(object sender, EventArgs e)
        {
            DataTable carreras = createCarrera.FindAllCarreras();

            if (null != carreras)
            {
                foreach (DataRow dr in carreras.Rows)
                {
                    this.dgvCarrera.Rows.Add(dr[1].ToString());
                }
            }
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            try
            {
                if (this.dgvCarrera.CurrentCell.Value != null)
                {
                    bo.Carrerabo car = createCarrera.FindCarreraByNombre(dgvCarrera.CurrentCell.Value.ToString());

                    if (null == car)
                    {
                        bool ingresada = createCarrera.SaveCarrera(dgvCarrera.CurrentCell.Value.ToString());

                        if (ingresada)
                        {
                            MessageBox.Show("Carrera Ingresada!!", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information);

                            refreshDgv();
                        }
                        else
                        {
                            MessageBox.Show("Error al Ingresar!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        }
                    }
                }
            }
            catch (exceptions.blexception)
            {
                MessageBox.Show("Error al Intentar Guardar!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error al Intentar Guardar!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                Gestión_UTN.util.EscribirLog.escribirArchivo(ex.Message);
            }
        }

        private void btnModificar_Click(object sender, EventArgs e)
        {
            try
            {
                if (this.dgvCarrera.CurrentCell.Value != null)
                {
                    bool modificada = createCarrera.ModifyCarrera(nombre_anterior, this.dgvCarrera.CurrentCell.Value.ToString());

                    if (modificada)
                    {
                        MessageBox.Show("Carrera Modificada!!", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information);

                        refreshDgv();
                    }
                    else
                    {
                        MessageBox.Show("Error al Modificar!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    }
                }
            }
            catch (exceptions.blexception)
            {
                MessageBox.Show("Error al Intentar Modificar!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error al Intentar Modificar!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                Gestión_UTN.util.EscribirLog.escribirArchivo(ex.Message);
            }
        }

        private void refreshDgv()
        {
            DataTable carreras = createCarrera.FindAllCarreras();

            if (null != carreras)
            {
                this.dgvCarrera.Rows.Clear();

                foreach (DataRow dr in carreras.Rows)
                {
                    this.dgvCarrera.Rows.Add(dr[1].ToString());
                }
            }
        }

        private void dgvCarrera_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (this.dgvCarrera.CurrentCell.Value != null)
            {
                nombre_anterior = this.dgvCarrera.CurrentCell.Value.ToString();
            }
        }
    }
}
